home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Graphics / Gallery / Source / PrefsWindow.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-20  |  19.4 KB  |  708 lines

  1. #include <stream.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #include <stdio.h>
  6.  
  7. #include "GUIC_Application.hpp"
  8. #include "GUIC_OldButton.hpp"
  9. #include "GUIC_Checkbox.hpp"
  10. #include "GUIC_ColorMixer.hpp"
  11. #include "GUIC_Cycle.hpp"
  12. #include "GUIC_Error.hpp"
  13. #include "GUIC_Event.hpp"
  14. #include "GUIC_FileString.hpp"
  15. #include "GUIC_Font.hpp"
  16. #include "GUIC_FontRequester.hpp"
  17. #include "GUIC_Frame.hpp"
  18. #include "GUIC_OldLabel.hpp"
  19. #include "GUIC_PathString.hpp"
  20. #include "GUIC_Radio.hpp"
  21. #include "GUIC_Register.hpp"
  22. #include "GUIC_Screen.hpp"
  23. #include "GUIC_ScreenRequester.hpp"
  24. #include "GUIC_SlidingInteger.hpp"
  25. #include "GUIC_String.hpp"
  26. #include "GUIC_Text.hpp"
  27.  
  28. #include "PrefsWindow.hpp"
  29.  
  30. /*********************************************************************************************************/
  31.     
  32. PrefsWindowC::PrefsWindowC                            (GUIC_ApplicationC &a, GUIC_ScreenC &s, GUIC_ScreenRequesterC &sReq, GUIC_FontRequesterC &fReq) : GUIC_WindowC (52,34)
  33. {
  34.     app                            = &a;
  35.     screen                    = &s;
  36.     screenRequester    = &sReq;
  37.     fontRequester        = &fReq;
  38.     fixedFont                = 0;
  39.     colorMixer                = new GUIC_ColorMixerC(a, s);
  40.         
  41.     // Register erstellen
  42.     reg = new GUIC_RegisterC            (1,1,50,32,5);
  43.     reg -> setName(1, "GUI");
  44.     reg -> setName(2, "Misc");
  45.     reg -> setName(3, "Thumb");
  46.     reg -> setName(4, "HTML");
  47.     reg -> setName(5, "Tables");
  48.     add ( reg );
  49.     
  50.     // Teil 1: GUI
  51.  
  52.     fr_screen    = new GUIC_FrameC                    ( 0, 0,48,12, "Screen");
  53.     cb_public    = new GUIC_CheckboxC             ( 1, 2, 3, 2, FALSE);
  54.     la_public        = new GUIC_OldLabelC                ( 5, 2,42, 2, "Use a _public screen:");
  55.     st_public        = new GUIC_StringC                    ( 1, 4,46, 2, "Workbench");
  56.     cb_own        = new GUIC_CheckboxC             ( 1, 7, 3, 2, TRUE);
  57.     la_own        = new GUIC_OldLabelC                ( 5, 7,42, 2, "Use _own public screen:");
  58.     tx_own        = new GUIC_TextC                        ( 1, 9,44, 2, "Like Workbench");
  59.     bt_own        = new GUIC_OldButtonC    (45, 9, 2, 2, "«");
  60.     
  61.     cb_public    -> setShortcut('p');
  62.     cb_own        -> setShortcut('o');
  63.     st_public        -> setEnabled(FALSE);
  64.     
  65.     reg->add(1, fr_screen);
  66.     reg->add(1, cb_public);
  67.     reg->add(1, la_public);
  68.     reg->add(1, st_public);
  69.     reg->add(1, cb_own);
  70.     reg->add(1, la_own);
  71.     reg->add(1, tx_own);
  72.     reg->add(1, bt_own);
  73.  
  74.     fr_font    = new GUIC_FrameC                    ( 0,14, 48, 7, "Font");
  75.     cb_font    = new GUIC_CheckboxC                ( 1,16, 3, 2, FALSE);
  76.     la_font    = new GUIC_OldLabelC                ( 5,16,42, 2, "Use own _font (instead of system default):");
  77.     tx_font    = new GUIC_TextC                        ( 1,18,44, 2, "topaz.font / 8");
  78.     bt_font    = new GUIC_OldButtonC            (45,18, 2, 2, "«");
  79.  
  80.     cb_font    -> setShortcut('f');
  81.     tx_font    -> setEnabled(FALSE);
  82.     bt_font    -> setEnabled(FALSE);
  83.     
  84.     reg->add(1, fr_font);
  85.     reg->add(1, cb_font);
  86.     reg->add(1, la_font);
  87.     reg->add(1, tx_font);
  88.     reg->add(1, bt_font);
  89.     
  90.     app->addPrefs("PublicScreen", cb_public);
  91.     app->addPrefs("PublicScreenName", st_public);
  92.     app->addPrefs("OwnScreen", cb_own);
  93.     app->addPrefs("OwnScreenName", tx_own);
  94.     app->addPrefs("OwnFont", cb_font);
  95.     app->addPrefs("OwnFontName", tx_font);
  96.     
  97.  
  98.     // Teil 2: Misc
  99.     
  100.     fr_paths                    = new GUIC_FrameC                ( 0, 0,48,12, "Paths");
  101.     la_thumbnailPath    = new GUIC_OldLabelC            ( 1, 2,46, 2, "_Path to store thumbnails and HTML files:");
  102.     ps_thumbnailPath    = new GUIC_PathStringC        ( 1, 4,46, 2, "HTML");
  103.     la_temporaryPath    = new GUIC_OldLabelC            ( 1, 7,46, 2, "_Temporary path for thumbnails:");
  104.     ps_temporaryPath    = new GUIC_PathStringC        ( 1, 9,46, 2, "temp");
  105.     
  106.     fr_shell                    = new GUIC_FrameC                ( 0,13,48, 7, "Shell command");
  107.     la_shellCommand    = new GUIC_OldLabelC            ( 1,15,46, 2, "_Command to open a shell window:");
  108.     st_shellCommand    = new GUIC_StringC                ( 1,17,46, 2, "NewShell \"CON:600/600/450/200/Shell/CLOSE/SCREEN Gallery\"");
  109.     
  110.     fr_priority                = new GUIC_FrameC                ( 0,21,48, 7, "Process Priority");
  111.     cb_priority                = new GUIC_CheckboxC            ( 1,23, 3, 2, FALSE);
  112.     la_priority                = new GUIC_OldLabelC            ( 5,23,42, 2, "Change pr_iority while processing:");
  113.     si_priority                = new GUIC_SlidingIntegerC    ( 1,25,46, 2, -128, 127, -1);
  114.             
  115.     ps_thumbnailPath    -> setShortcut('p');
  116.     ps_temporaryPath    -> setShortcut('t');
  117.     st_shellCommand    -> setShortcut('c');
  118.     cb_priority                -> setShortcut('i');
  119.     
  120.     reg->add(2, fr_paths);
  121.     reg->add(2, la_thumbnailPath);
  122.     reg->add(2, ps_thumbnailPath);
  123.     reg->add(2, la_temporaryPath);
  124.     reg->add(2, ps_temporaryPath);
  125.     reg->add(2, fr_shell);
  126.     reg->add(2, la_shellCommand);
  127.     reg->add(2, st_shellCommand);
  128.     reg->add(2, fr_priority);
  129.     reg->add(2, cb_priority);
  130.     reg->add(2, la_priority);
  131.     reg->add(2, si_priority);
  132.     
  133.     app->addPrefs("ThumbnailPath", ps_thumbnailPath);
  134.     app->addPrefs("TemporaryPath", ps_temporaryPath);
  135.     app->addPrefs("ShellCommand", st_shellCommand);
  136.     app->addPrefs("ChangePriority", cb_priority);
  137.     app->addPrefs("ProcessPriority", si_priority);
  138.  
  139.     // Teil 3: Thumbnails
  140.     
  141.     fr_thumbnails                = new GUIC_FrameC                ( 0, 0,48,20, "Thumbnails");
  142.     la_thumbnailWidth        = new GUIC_OldLabelC            ( 1, 2,46, 2, "_Width of thumbnails:");
  143.     si_thumbnailWidth        = new GUIC_SlidingIntegerC    ( 1, 4,46, 2, 50, 200, 110);
  144.     la_thumbnailHeight        = new GUIC_OldLabelC            ( 1, 6,46, 2, "_Height of thumbnails:");
  145.     si_thumbnailHeight        = new GUIC_SlidingIntegerC    ( 1, 8,46, 2, 50, 200, 110);
  146.     la_quality                    = new GUIC_OldLabelC            ( 1,10,46, 2, "_Quality of JPEG file:");
  147.     si_quality                    = new GUIC_SlidingIntegerC    ( 1,12,46, 2, 10, 100, 90);
  148.     la_thumbnailHide            = new GUIC_OldLabelC            ( 1,15,40, 2, "Set hide _flag for thumbnails:");
  149.     cb_thumbnailHide        = new GUIC_CheckboxC            (44,15, 3, 2, TRUE);
  150.     la_thumbnailDelete        = new GUIC_OldLabelC            ( 1,17,40, 2, "_Delete obsolete thumbnails:");
  151.     cb_thumbnailDelete    = new GUIC_CheckboxC            (44,17, 3, 2, FALSE);
  152.  
  153.     si_thumbnailWidth        -> setShortcut('w');
  154.     si_thumbnailHeight        -> setShortcut('h');
  155.     si_quality                    -> setShortcut('q');
  156.     cb_thumbnailHide        -> setShortcut('f');
  157.     cb_thumbnailDelete    -> setShortcut('d');
  158.     
  159.     reg->add(3, fr_thumbnails);
  160.     reg->add(3, la_thumbnailWidth);
  161.     reg->add(3, si_thumbnailWidth);
  162.     reg->add(3, la_thumbnailHeight);
  163.     reg->add(3, si_thumbnailHeight);
  164.     reg->add(3, la_quality);
  165.     reg->add(3, si_quality);
  166.     reg->add(3, la_thumbnailHide);
  167.     reg->add(3, cb_thumbnailHide);
  168.     reg->add(3, la_thumbnailDelete);
  169.     reg->add(3, cb_thumbnailDelete);
  170.     
  171.     app->addPrefs("ThumbnailWidth", si_thumbnailWidth);
  172.     app->addPrefs("ThumbnailHeight", si_thumbnailHeight);
  173.     app->addPrefs("ThumbnailQuality", si_quality);
  174.     app->addPrefs("ThumbnailHide", cb_thumbnailHide);
  175.     app->addPrefs("ThumbnailDelete", cb_thumbnailDelete);
  176.  
  177.     // Teil 4: HTML
  178.     
  179.     fr_html                = new GUIC_FrameC                ( 0, 0,48,27, "HTML");
  180.     la_pattern1            = new GUIC_OldLabelC            ( 1, 2,10, 2, "_Pattern 1:");
  181.     fs_pattern1            = new GUIC_FileStringC            (12, 2,35, 2, "");
  182.     la_pattern2            = new GUIC_OldLabelC            ( 1, 4,10, 2, "P_attern 2:");
  183.     fs_pattern2            = new GUIC_FileStringC            (12, 4,35, 2, "");
  184.     la_sound1            = new GUIC_OldLabelC            ( 1, 7,10, 2, "_Sound 1:");
  185.     fs_sound1            = new GUIC_FileStringC            (12, 7,35, 2, "");
  186.     la_sound2            = new GUIC_OldLabelC            ( 1, 9,10, 2, "S_ound 2:");
  187.     fs_sound2            = new GUIC_FileStringC            (12, 9,35, 2, "");
  188.     la_up                    = new GUIC_OldLabelC            ( 1,12,10, 2, "Image _Up:");
  189.     fs_up                    = new GUIC_FileStringC            (12,12,35, 2, "");
  190.     la_left                    = new GUIC_OldLabelC            ( 1,14,10, 2, "_Left:");
  191.     fs_left                    = new GUIC_FileStringC            (12,14,35, 2, "");
  192.     la_right                = new GUIC_OldLabelC            ( 1,16,10, 2, "_Right:");
  193.     fs_right                = new GUIC_FileStringC            (12,16,35, 2, "");
  194.     la_filename            = new GUIC_OldLabelC            ( 1,19,20, 2, "_Name for html files:"); 
  195.     st_filename            = new GUIC_StringC                (24,19,10, 2, "index");
  196.     cy_suffix            = new GUIC_CycleC                (35,19,12, 2, ".html|.htm");
  197.     la_frames            = new GUIC_OldLabelC            ( 1,22,22, 2, "Create _frames:");
  198.     cb_frames            = new GUIC_CheckboxC            (44,22, 3, 2, TRUE);
  199.     la_frameWidth        = new GUIC_OldLabelC            ( 1,24,22, 2, "_Width of menu frame:");
  200.     si_frameWidth        = new GUIC_SlidingIntegerC    (24,24,23, 2, 50, 300, 150);
  201.  
  202.     fs_pattern1            -> setShortcut('p');
  203.     fs_pattern2            -> setShortcut('a');
  204.     fs_sound1            -> setShortcut('s');
  205.     fs_sound2            -> setShortcut('o');
  206.     fs_up                    -> setShortcut('u');
  207.     fs_left                    -> setShortcut('l');
  208.     fs_right                -> setShortcut('r');
  209.     st_filename            -> setShortcut('n');
  210.     cb_frames            -> setShortcut('f');
  211.     si_frameWidth        -> setShortcut('w');
  212.     fs_pattern1         -> setFilter(GUIC_PictureFile);
  213.     fs_pattern2         -> setFilter(GUIC_PictureFile);
  214.     fs_sound1             -> setFilter(GUIC_SoundFile);
  215.     fs_sound2             -> setFilter(GUIC_SoundFile);
  216.     
  217.     reg->add(4, fr_html);
  218.     reg->add(4, la_pattern1);
  219.     reg->add(4, fs_pattern1);
  220.     reg->add(4, la_pattern2);
  221.     reg->add(4, fs_pattern2);
  222.     reg->add(4, la_up);
  223.     reg->add(4, fs_up);
  224.     reg->add(4, la_left);
  225.     reg->add(4, fs_left);
  226.     reg->add(4, la_right);
  227.     reg->add(4, fs_right);
  228.     reg->add(4, la_sound1);
  229.     reg->add(4, fs_sound1);
  230.     reg->add(4, la_sound2);
  231.     reg->add(4, fs_sound2);
  232.     reg->add(4, la_filename);
  233.     reg->add(4, st_filename);
  234.     reg->add(4, cy_suffix);
  235.     reg->add(4, la_frames);
  236.     reg->add(4, cb_frames);
  237.     reg->add(4, la_frameWidth);
  238.     reg->add(4, si_frameWidth);
  239.     
  240.     app->addPrefs("Pattern1", fs_pattern1);
  241.     app->addPrefs("Pattern2", fs_pattern2);
  242.     app->addPrefs("Sound1", fs_sound1);
  243.     app->addPrefs("Sound2", fs_sound2);
  244.     app->addPrefs("UpImage", fs_up);
  245.     app->addPrefs("LeftImage", fs_left);
  246.     app->addPrefs("RightImage", fs_right);
  247.     app->addPrefs("Filename", st_filename);
  248.     app->addPrefs("Suffix", cy_suffix);
  249.     app->addPrefs("CreateFrames", cb_frames);
  250.     app->addPrefs("MenuFrameWidth", si_frameWidth);
  251.  
  252.     // Teil 5: Tables
  253.     
  254.     fr_table                        = new GUIC_FrameC                    ( 0, 0,48,21, "Tables");
  255.     la_tableLines                = new GUIC_OldLabelC                ( 1, 2,12, 2, "_Lines:");
  256.     si_tableLines                = new GUIC_SlidingIntegerC        (14, 2,33, 2, 3, 200, 3);
  257.     la_tableColumns            = new GUIC_OldLabelC                ( 1, 4,12, 2, "_Columns:");
  258.     si_tableColumns            = new GUIC_SlidingIntegerC        (14, 4,33, 2, 3, 200, 3);
  259.     la_tableBorderSize        = new GUIC_OldLabelC                ( 1, 6,12, 2, "_Bordersize:");
  260.     si_tableBorderSize        = new GUIC_SlidingIntegerC        (14, 6,33, 2, 0, 20, 4);
  261.     la_showSize                = new GUIC_OldLabelC                ( 1, 9,20, 2, "Show file _size:");
  262.     cb_showSize                = new GUIC_CheckboxC                (44, 9, 3, 2, TRUE);
  263.     la_showDate                = new GUIC_OldLabelC                ( 1,11,20, 2, "Show file _data:");
  264.     cb_showDate                = new GUIC_CheckboxC                (44,11, 3, 2, TRUE);
  265.     la_showDimensions    = new GUIC_OldLabelC                ( 1,13,20, 2, "Show d_imensions:");
  266.     cb_showDimensions    = new GUIC_CheckboxC                (44,13, 3, 2, TRUE);
  267.     la_tableColor1                = new GUIC_OldLabelC                ( 1,16,25, 2, "_Title background color:");
  268.     st_tableColor1            = new GUIC_StringC                    (32,16,13, 2, "0xA99A99");
  269.     bt_tableColor1            = new GUIC_OldButtonC            (45,16, 2, 2, "«");
  270.     la_tableColor2                = new GUIC_OldLabelC                ( 1,18,25, 2, "_Entry background color:");
  271.     st_tableColor2            = new GUIC_StringC                    (32,18,13, 2, "0xBBBBBB");
  272.     bt_tableColor2            = new GUIC_OldButtonC            (45,18, 2, 2, "«");
  273.  
  274.     si_tableLines                -> setShortcut('l');
  275.     si_tableColumns            -> setShortcut('c');
  276.     si_tableBorderSize        -> setShortcut('b');
  277.     cb_showSize                -> setShortcut('s');
  278.     cb_showDate                -> setShortcut('d');
  279.     cb_showDimensions    -> setShortcut('i');
  280.     bt_tableColor1            -> setShortcut('t');
  281.     bt_tableColor2            -> setShortcut('e');
  282.  
  283.     reg->add(5, fr_table);
  284.     reg->add(5, la_tableLines);
  285.     reg->add(5, si_tableLines);
  286.     reg->add(5, la_tableColumns);
  287.     reg->add(5, si_tableColumns);
  288.     reg->add(5, la_tableBorderSize);
  289.     reg->add(5, si_tableBorderSize);
  290.     reg->add(5, la_showSize);
  291.     reg->add(5, cb_showSize);
  292.     reg->add(5, la_showDate);
  293.     reg->add(5, cb_showDate);
  294.     reg->add(5, la_showDimensions);
  295.     reg->add(5, cb_showDimensions);
  296.     reg->add(5, la_tableColor1);
  297.     reg->add(5, st_tableColor1);
  298.     reg->add(5, bt_tableColor1);
  299.     reg->add(5, la_tableColor2);
  300.     reg->add(5, st_tableColor2);
  301.     reg->add(5, bt_tableColor2);
  302.     
  303.     app->addPrefs("TableLines", si_tableLines);
  304.     app->addPrefs("TableColumns", si_tableColumns);
  305.     app->addPrefs("TableBordersize", si_tableBorderSize);
  306.     app->addPrefs("TableShowSize", cb_showSize);
  307.     app->addPrefs("TableShowDate", cb_showDate);
  308.     app->addPrefs("TableShowDimensions", cb_showDimensions);
  309.     app->addPrefs("TableColor1", st_tableColor1);
  310.     app->addPrefs("TableColor2", st_tableColor2);
  311.  
  312.     app -> addPrefs("ColorMixer", colorMixer);
  313.     app -> addPrefs("Register", reg);
  314.     app -> addPrefs("PrefsWindow", this);
  315.     
  316.     setTitle("Gallery - Prefs");
  317.     setGuideContext("PrefsWindow");
  318.     activate();
  319. }
  320. PrefsWindowC::~PrefsWindowC                            (VOID)
  321. {
  322.     cleanUp();
  323. }
  324.  
  325. /*********************************************************************************************************/
  326.  
  327. STRPTR    PrefsWindowC::getClass                        (VOID)
  328. {
  329.     return "PrefsWindowC";
  330. }
  331.  
  332. BOOL        PrefsWindowC::action                            (GUIC_EventC &e)
  333. {
  334.     switch (e.id)
  335.         {
  336.         case GUIC_GadgetEvent:
  337.             if (e.gadget == (GUIC_GadgetC *) cb_public)
  338.                 {
  339.                 cb_own->set ( cb_public->get() ? FALSE : TRUE );
  340.                 setScreen();
  341.                 }
  342.             else if (e.gadget == (GUIC_GadgetC *) st_public)
  343.                 {
  344.                 setScreen();
  345.                 }
  346.             else if (e.gadget == (GUIC_GadgetC *) cb_own)
  347.                 {
  348.                 cb_public->set ( cb_own->get() ? FALSE : TRUE );
  349.                 setScreen();
  350.                 }
  351.             else if (e.gadget == (GUIC_GadgetC *) bt_own)
  352.                 {
  353.                 if (screenRequester->request(this)) setScreen();
  354.                 }
  355.             else if (e.gadget == (GUIC_GadgetC *) cb_font)
  356.                 {
  357.                 setFont();
  358.                 }
  359.             else if (e.gadget == (GUIC_GadgetC *) bt_font)
  360.                 {
  361.                 if (fontRequester->request(this)) setFont();
  362.                 }
  363.             else if (e.gadget == (GUIC_GadgetC *) cb_priority)
  364.                 {
  365.                 si_priority->setEnabled ( cb_priority->get() ? TRUE : FALSE);
  366.                 }
  367.             else if (e.gadget == (GUIC_GadgetC *) bt_tableColor1)
  368.                 {
  369.                 app->setBusy(TRUE);
  370.  
  371.                 LONG r=0, g=0, b=0;
  372.                 color = 1;
  373.                 
  374.                 if (! convertHEXToRGB(st_tableColor1->get(), r, g, b))
  375.                     {
  376.                     GUIC_ErrorC err ("Error", "Can't convert sting to RGB values.\nPlease check.");
  377.                     err.request();
  378.                     app->setBusy(FALSE);
  379.                     return TRUE;
  380.                     }
  381.  
  382.                 colorMixer->setRGB(r,g,b);
  383.                 screen->add(colorMixer);                
  384.                 
  385.                 return TRUE;
  386.                 }
  387.             else if (e.gadget == (GUIC_GadgetC *) bt_tableColor2)
  388.                 {
  389.                 app->setBusy(TRUE);
  390.                 
  391.                 LONG r=0, g=0, b=0;
  392.                 color = 2;
  393.                 
  394.                 if (! convertHEXToRGB(st_tableColor2->get(), r, g, b))
  395.                     {
  396.                     GUIC_ErrorC err ("Error", "Can't convert sting to RGB values.\nPlease check.");
  397.                     err.request();
  398.                     app->setBusy(FALSE);
  399.                     return TRUE;
  400.                     }
  401.  
  402.                 colorMixer->setRGB(r,g,b);
  403.                 screen->add(colorMixer);                
  404.                 
  405.                 return TRUE;
  406.                 }
  407.             return TRUE;
  408.             break;
  409.         case GUIC_OpenWindow:
  410.             return TRUE;
  411.             break;
  412.         case GUIC_CloseWindow:
  413.             screen->remove(this);
  414.             return TRUE;
  415.             break;
  416.         }
  417.     
  418.     return FALSE;
  419. }
  420.  
  421. VOID        PrefsWindowC::setPrefs                        (VOID)
  422. {
  423.     app->addPrefs("ScreenRequester", screenRequester);
  424.     app->addPrefs("FontRequester", fontRequester);
  425.     
  426.     fontRequester->setFixedWidth(TRUE);
  427.     
  428.     setFont();
  429.     setScreen();
  430.  
  431.     si_priority->setEnabled ( cb_priority->get() ? TRUE : FALSE);
  432. }
  433. VOID        PrefsWindowC::windowClosed            (GUIC_WindowC *w)
  434. {
  435.     if (w == (GUIC_WindowC *) colorMixer)
  436.         {
  437.         STRPTR hex = new CHAR [10];
  438.         
  439.         screen->remove(colorMixer);
  440.  
  441.         if (convertRGBToHEX ( colorMixer->getRed(), colorMixer->getGreen(), colorMixer->getBlue(), &hex )) 
  442.             ( color == 1 ? st_tableColor1 : st_tableColor2 ) -> set( hex );
  443.         
  444.         delete [] hex;
  445.         
  446.         app->setBusy(FALSE);
  447.         }
  448. }
  449.     
  450. VOID        PrefsWindowC::setFont                        (VOID)
  451. {
  452.     if ( cb_font->get() )
  453.         {
  454.         bt_font->setEnabled(TRUE);
  455.         tx_font->setEnabled(TRUE);
  456.  
  457.         STRPTR    fontName    = fontRequester->getName();
  458.         LONG        fontSize        = fontRequester->getSize();
  459.         STRPTR    text            = new CHAR [ strlen(fontName) + 10 ];
  460.             
  461.         sprintf(text, "%s / %ld", fontName, fontSize);
  462.         tx_font->set(text);
  463.         delete [] text;
  464.             
  465.         if (fixedFont) delete fixedFont;
  466.         fixedFont = new GUIC_FixedFontC(fontName, fontSize);
  467.         screen->setFont(fixedFont);
  468.         }
  469.     else
  470.         {
  471.         bt_font->setEnabled(FALSE);
  472.         tx_font->setEnabled(FALSE);
  473.         
  474.         if (fixedFont) delete fixedFont;
  475.         fixedFont = new GUIC_FixedFontC;
  476.         screen->setFont(fixedFont);        
  477.         }
  478. }
  479. VOID        PrefsWindowC::setScreen                    (VOID)
  480. {
  481.     if ( cb_own->get() )
  482.         {
  483.         st_public->setEnabled(FALSE);
  484.         
  485.         tx_own->setEnabled(TRUE);
  486.         bt_own->setEnabled(TRUE);
  487.         
  488.         STRPTR     mode     = screenRequester->getModeName();
  489.         LONG     width    = screenRequester->getWidth();
  490.         LONG        height    = screenRequester->getHeight();
  491.         LONG        depth    = screenRequester->getDepth();
  492.         STRPTR     text    = new CHAR [ strlen(mode) + 50 ];
  493.     
  494.         sprintf(text, "%s (%ld · %ld · %ld)", mode, width, height, depth);
  495.         tx_own->set(text);
  496.         delete [] text;
  497.         
  498.         screen->set(screenRequester);
  499.         }
  500.     else 
  501.         {
  502.         st_public->setEnabled(TRUE);
  503.  
  504.         bt_own->setEnabled(FALSE);
  505.         tx_own->setEnabled(FALSE);
  506.                 
  507.         screen->set(st_public->get());
  508.         }
  509. }
  510.  
  511. BOOL        PrefsWindowC::hexToLong                    (CHAR c, LONG &l)
  512. {
  513.     switch (toupper(c))
  514.         {
  515.         case '0':
  516.             l =  0;
  517.             break;
  518.         case '1':
  519.             l =  1;
  520.             break;
  521.         case '2':
  522.             l =  2;
  523.             break;
  524.         case '3':
  525.             l =  3;
  526.             break;
  527.         case '4':
  528.             l =  4;
  529.             break;
  530.         case '5':
  531.             l =  5;
  532.             break;
  533.         case '6':
  534.             l =  6;
  535.             break;
  536.         case '7':
  537.             l =  7;
  538.             break;
  539.         case '8':
  540.             l =  8;
  541.             break;
  542.         case '9':
  543.             l =  9;
  544.             break;
  545.         case 'A':
  546.             l =  10;
  547.             break;
  548.         case 'B':
  549.             l =  11;
  550.             break;
  551.         case 'C':
  552.             l =  12;
  553.             break;
  554.         case 'D':
  555.             l =  13;
  556.             break;
  557.         case 'E':
  558.             l =  14;
  559.             break;
  560.         case 'F':
  561.             l =  15;
  562.             break;
  563.         default:
  564.             return FALSE;
  565.         }
  566.         
  567.     return TRUE;
  568. }
  569. BOOL     PrefsWindowC::convertHEXToRGB        (STRPTR hex, LONG &r, LONG &g, LONG &b)
  570. {
  571.     if (strlen(hex) < 8)                         return FALSE;
  572.     if (hex[0] != '0')                             return FALSE;
  573.     if (hex[1] != 'x' && hex[1] !='X')    return FALSE;
  574.  
  575.     LONG l, red, green, blue;
  576.     
  577.     if (! hexToLong(hex[2], l)) return FALSE;
  578.     red = 16 * l;
  579.     if (! hexToLong(hex[3], l)) return FALSE;
  580.     red = red + l;
  581.     
  582.     if (! hexToLong(hex[4], l)) return FALSE;
  583.     green = 16 * l;
  584.     if (! hexToLong(hex[5], l)) return FALSE;
  585.     green = green + l;
  586.  
  587.     if (! hexToLong(hex[6], l)) return FALSE;
  588.     blue = 16 * l;
  589.     if (! hexToLong(hex[7], l)) return FALSE;
  590.     blue = blue + l;
  591.  
  592.     r = red;
  593.     g = green;
  594.     b = blue;
  595.     
  596.     return TRUE;
  597. }
  598. BOOL     PrefsWindowC::convertRGBToHEX        (LONG r, LONG g, LONG b, STRPTR *hex)
  599. {
  600.     if (r < 0) r=0;
  601.     if (r > 255) r=255;
  602.     
  603.     if (g < 0) g=0;
  604.     if (g > 255) g=255;
  605.     
  606.     if (b < 0) b=0;
  607.     if (b > 255) b=255;
  608.  
  609.     sprintf (*hex, "0x%02lX%02lX%02lX", r, g, b);
  610.  
  611.     return TRUE;
  612. }
  613.  
  614. /*********************************************************************************************************/
  615.  
  616. VOID        PrefsWindowC::cleanUp                        (VOID)
  617. {
  618.     delete reg;
  619.  
  620.     delete fr_screen;
  621.     delete cb_public;
  622.     delete la_public;
  623.     delete st_public;
  624.     
  625.     delete cb_own;
  626.     delete la_own;
  627.     delete tx_own;
  628.     delete bt_own;
  629.  
  630.     delete fr_font;
  631.     delete cb_font;
  632.     delete la_font;
  633.     delete tx_font;
  634.     delete bt_font;
  635.     
  636.     delete fr_paths;
  637.     delete la_thumbnailPath;
  638.     delete ps_thumbnailPath;
  639.     delete la_temporaryPath;
  640.     delete ps_temporaryPath;
  641.     delete fr_shell;
  642.     delete la_shellCommand;
  643.     delete st_shellCommand;
  644.     delete fr_priority;
  645.     delete cb_priority;
  646.     delete la_priority;
  647.     delete si_priority;
  648.  
  649.     delete fr_thumbnails;
  650.     delete la_thumbnailWidth;
  651.     delete si_thumbnailWidth;
  652.     delete la_thumbnailHeight;
  653.     delete si_thumbnailHeight;
  654.     delete la_quality;
  655.     delete si_quality;
  656.     delete la_thumbnailHide;
  657.     delete cb_thumbnailHide;
  658.     delete la_thumbnailDelete;
  659.     delete cb_thumbnailDelete;
  660.  
  661.     delete fr_html;
  662.     delete la_pattern1;
  663.     delete fs_pattern1;
  664.     delete la_pattern2;
  665.     delete fs_pattern2;
  666.     delete la_up;
  667.     delete fs_up;
  668.     delete la_left;
  669.     delete fs_left;
  670.     delete la_right;
  671.     delete fs_right;
  672.     delete la_sound1;
  673.     delete fs_sound1;
  674.     delete la_sound2;
  675.     delete fs_sound2;
  676.     delete la_filename;
  677.     delete st_filename;
  678.     delete cy_suffix;
  679.     delete la_frames;
  680.     delete cb_frames;
  681.     delete la_frameWidth;
  682.     delete si_frameWidth;
  683.  
  684.     delete fr_table;
  685.     delete la_tableLines;
  686.     delete si_tableLines;
  687.     delete la_tableColumns;
  688.     delete si_tableColumns;
  689.     delete la_tableBorderSize;
  690.     delete si_tableBorderSize;
  691.     delete la_showSize;
  692.     delete cb_showSize;
  693.     delete la_showDate;
  694.     delete cb_showDate;
  695.     delete la_showDimensions;
  696.     delete cb_showDimensions;
  697.     delete la_tableColor1;
  698.     delete st_tableColor1;
  699.     delete bt_tableColor1;
  700.     delete la_tableColor2;
  701.     delete st_tableColor2;
  702.     delete bt_tableColor2;
  703.  
  704.     if (fixedFont)     delete fixedFont;
  705.     if (colorMixer)    delete colorMixer;
  706. }
  707.  
  708.